package com.sz.admin.datainfo.mapper;

import com.sz.admin.datainfo.pojo.po.DriverUser;
import com.sz.admin.datainfo.pojo.dto.DriverUserListDTO;
import com.sz.admin.datainfo.pojo.vo.DriverUserVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 * 司机用户表 Mapper 接口
 * </p>
 *
 * @author sz-admin
 * @since 2025-09-12
 */
@Mapper
public interface DriverUserMapper {

    /**
     * 新增司机用户
     */
    int insert(DriverUser driverUser);

    /**
     * 根据ID删除司机用户
     */
    int deleteById(@Param("id") Long id);

    /**
     * 批量删除司机用户
     */
    int deleteByIds(@Param("ids") List<Long> ids);

    /**
     * 更新司机用户
     */
    int updateById(DriverUser driverUser);

    /**
     * 根据ID查询司机用户
     */
    DriverUserVO selectById(@Param("id") Long id);

    /**
     * 分页查询司机用户列表
     */
    List<DriverUserVO> selectPageList(DriverUserListDTO dto);

    /**
     * 查询司机用户列表
     */
    List<DriverUserVO> selectList(DriverUserListDTO dto);

    /**
     * 统计总数
     */
    Long selectCount(DriverUserListDTO dto);

    /**
     * 检查用户名是否存在
     */
    int checkUsernameExists(@Param("username") String username, @Param("excludeId") Long excludeId);

    /**
     * 检查手机号是否存在
     */
    int checkPhoneExists(@Param("phone") String phone, @Param("excludeId") Long excludeId);
    
    /**
     * 根据手机号查询司机用户
     */
    DriverUserVO selectByPhone(@Param("phone") String phone);
    
    /**
     * 根据手机号查询司机用户（包含密码）
     */
    DriverUser selectByPhoneWithPassword(@Param("phone") String phone);
}